#ifndef GEOMETRY
#define GEOMETRY

#include "../core/math/aabbox.h"
#include "../core/math/array.h"
#include "mesh.h"

namespace sleek
{
    namespace mesh
    {
        class MeshBuffer;
        class Geometry
        {
            public:
                Geometry();
                ~Geometry();

                MeshBuffer* createPlane(core::math::vector2df size = core::math::vector2df(5.f,5.f), core::u32 polyCountX = 1, core::u32 polyCountY = 1, texture::pixel color = texture::pixel(255,255,255,255));
                MeshBuffer* createWall(core::math::vector2df size = core::math::vector2df(5.f,5.f), texture::pixel color = texture::pixel(255,255,255,255));
                MeshBuffer* createCircle(core::math::vector2df radiusxy = core::math::vector2df(5.f,5.f), core::f32 step_x = 10, core::f32 step_y = 10, texture::pixel color = texture::pixel(255,255,255,255));
                MeshBuffer* createSphere(core::f32 radius = 5.f, core::u32 polyCountX = 16, core::u32 polyCountY = 16, texture::pixel color = texture::pixel(255,255,255,255)); // not implented
                MeshBuffer* createCube(core::math::vector3df size = core::math::vector3df(5.f, 5.f, 5.f), texture::pixel color = texture::pixel(255,255,255,255));
                MeshBuffer* createPolygone(core::math::vector3df,core::math::vector3df,core::math::vector3df, texture::pixel color = texture::pixel(255,255,255,255));
                MeshBuffer* createPyramid(core::math::vector3df size = core::math::vector3df(5.f, 5.f, 5.f), texture::pixel color = texture::pixel(255,255,255,255));
                MeshBuffer* createTorus(core::f32 radiusX = 5.f, core::f32 radiusY = 2.5f, core::u32 polyCountX = 16, core::u32 polyCountY = 16, texture::pixel color = texture::pixel(255,255,255,255)); // not implented
                MeshBuffer* createCone(core::f32 radius = 5.f, core::f32 length = 5.f, core::u32 tesselation = 1, texture::pixel color = texture::pixel(255,255,255,255)); // not implented
                MeshBuffer* createCylindre(core::f32 radius = 5.f, core::f32 length = 5.f, core::u32 tesselation = 1, texture::pixel color = texture::pixel(255,255,255,255)); // not implented
            private:
        };
    }
}

#endif
